﻿package com.wsj.common.paymoney;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.wsj.common.paymoney.util.Payment;



/**
 * @author fengbin
 *支付宝支付金额
 *
 *该接口使用:
 * 1.先设置协议参数
 * 2.然后设置订单参数
 * 3.传递数据到支付宝
 */
public class AlipayPayMoney {
	
	/******支付的协议参数*******/
	/***
	 *  ] (账户内提取)
	 */
	String partner="";
	
	/***
	 * 支付宝合作厂商id (可与partner值同)
	 */
	String agent="";
	
	/**
	 * 支付宝安全校验码(账户内提取)
	 */
	String key = "";
	
	/**
	 *  卖家支付宝帐户
	 */
	String seller_email="";
	
	
	/***
	 * 支付成功,通知返回逻辑处理页面
	 * 
	 */
	String notify_url="";
	
	
	/***
	 * 支付者看到的通知页面(不需要验证,只检查订单是否已经是正式订单)
	 */
	String  return_url="";
	
	
	
	
	/**********支付的关键参数**********/
	
	
	/**
	 * 订单id
	 */
	String out_trade_no="";
	
	/**
	 * 商品详情
	 */
	
	String  show_url="";
	/**
	 * 描述
	 */
	String body="";
	
	/***
	 * 商品名称
	 */
	String  subject="";
	
	/**
	 * 订单总价
	 */
	String price="";
	
	/**
	 * 订单数量(一般固定为1)
	 */
	String quantity="1";
	
	/**
	 * 折扣(一般不需要)
	 */
	String discount="0.00";
	
	/***
	 * 支付类型(一般为1)
	 */
	
	String  payment_type="1";
	
	
	/**
	 * 支付宝处理转到支付页面
	 * body:我们这边的订单id,
	 * 
	 * 折扣 discount 0.00
	 * payment_type 1 支付类型
	 * @return
	 */
	public void toAlipayPayPage(HttpServletRequest request) {

		
		//		Date Now_Date = new Date();
		String paygateway = "https://www.alipay.com/cooperate/gateway.do?"; // '支付接口
		String service = "trade_create_by_buyer";//Globe.DEFAULT_SERVICE;// create_direct_pay_by_user
		String sign_type = "MD5";//Globe.DEFAULT_SIGN_TYPE;
		String out_trade_no = this.out_trade_no; // 商户网站订单
		String input_charset = "GBK";
		String partner =this.partner; // 支付宝合作伙伴id (账户内提取)
		String agent =this.agent; // 支付宝合作厂商id (可与partner值同)
		String key = this.key; // 支付宝安全校验码(账户内提取)
		String seller_email =this.seller_email; // 卖家支付宝帐户
		// ******以上是账户信息，以下是商品信息**************************
		// String body = "阿"; //商品描述，推荐格式：商品名称（订单编号：订单编号）
		// String subject = "test"; //商品名称
		// String price = "0.01"; //订单总价
		// String quantity = "1";
		String  show_url = "http://sale.qqddc.com/buy/manage/myOrderF.do?action=list&orderId=" + out_trade_no;

		// String discount = "0";
		// ******物流信息和支付宝通知，一般商城不需要通知，请删除此参数，并且在payment.java里面相应删除参数********
		 String logistics_type = "EMS";
		 String logistics_fee = "0.00";
		 String logistics_payment = "SELLER_PAY";
		 String notify_url =this.notify_url;//通知页面,也就是efzk网业务逻辑处理页面
		//支付成功页面
		String return_url =this.return_url; // 支付完成后跳转返回的网址URL

		
		
		String ItemUrl = Payment.CreateUrl(paygateway, service, sign_type,
				out_trade_no, input_charset, partner, agent, key, seller_email,
				body, subject, price, quantity, show_url, payment_type,
				discount,notify_url ,return_url,logistics_type,logistics_fee,logistics_payment);
		// notify_url需要的话请把这个参数加上到上面createurl
		
//		System.out.println("\n\nItemUrl:"+ItemUrl);
		// 跳转到支付宝页面
        request.setAttribute("ItemUrl",ItemUrl);
		
	}
	
	
    
//    /***
//     * 往request中设置参数
//     */
//    public boolean  setParamentToRequest(HttpServletRequest request)
//    {
//        String out_trade_no = this.out_trade_no; // 商户网站订单
//        String paygateway = PayMoneyGlobe.DEFAULT_PAY_GATE_WAY; // '支付接口
//        String service = PayMoneyGlobe.DEFAULT_SERVICE;// 处理方式 create_direct_pay_by_user
//        String sign_type = PayMoneyGlobe.DEFAULT_SIGN_TYPE;  //加密方式  MD5
//        String input_charset = PayMoneyGlobe.DEFAULT_INPUT_CHARSET; //编码模式Gbk
//        
//        String partner = this.partner; // 支付宝合作伙伴id (账户内提取)
//        String agent = this.agent;// 支付宝合作厂商id (可与partner值同)
//        String key = this.key; // 支付宝安全校验码(账户内提取)
//        String seller_email = this.seller_email; // 卖家支付宝帐户
//        // ******以上是账户信息，以下是商品信息**************************
//        // String body = "阿"; //商品描述，推荐格式：商品名称（订单编号：订单编号）
//        // String subject = "test"; //商品名称
//        // String price = "0.01"; //订单总价
//        // String quantity = "1";
//        String  show_url = this.show_url; //"http://www.efzk.com/customer/account/shopUser_orderList.jsf?ordersId="+body;
//
//        // String discount = "0";
//        // ******物流信息和支付宝通知，一般商城不需要通知，请删除此参数，并且在payment.java里面相应删除参数********
//         String logistics_type = "EMS";
//         String logistics_fee = "0.00";
//         String logistics_payment = "SELLER_PAY";
//         String notify_url = this.notify_url;//通知页面,也就是efzk网业务逻辑处理页面
//        //支付成功页面
//        String return_url =this.return_url; // 支付完成后跳转返回的网址URL
//        
//        
//        request.setAttribute("service",service);
//        request.setAttribute("sign_type",sign_type);
//        request.setAttribute("out_trade_no",out_trade_no);
//        request.setAttribute("partner",partner);
//        request.setAttribute("key",key);
//        request.setAttribute("body",this.body);
//        request.setAttribute("price",this.price);
//        request.setAttribute("seller_email",seller_email);
//        request.setAttribute("subject",subject);
//        request.setAttribute("show_url",show_url);
//        request.setAttribute("notify_url",notify_url);
//        request.setAttribute("return_url",return_url);
//        
//        
//        return true;
//        
//    }
    
    
    
	
	/****
	 * 加载商户的支付协议参数
	 * 
	 * 支付宝合作伙伴id (账户内提取)      partner
	 * 支付宝合作厂商id (可与partner值同)  agent
	 * 支付宝安全校验码(账户内提取)  key
	 * 卖家支付宝帐户  seller_email
	 * 支付成功,通知返回逻辑处理页面  notify_url
	 * 支付者看到的通知页面(不需要验证,只检查订单是否已经是正式订单)return_url
	 */
	
	public void setAlipayProtocol(String partner,String agent,String key,String seller_email,String notify_url,String  return_url)
	{
		
		this.partner=partner;
		this.agent=agent;
		this.key=key;
		this.seller_email=seller_email;
		this.notify_url=notify_url;
		this.return_url=return_url;
		
	}
	
	
	/**
	 * 加载订单信息
	 *订单id  out_trade_no
	 *
	 *商品详情 show_url
	 *描述  body 与订单id相同
	 *商品名称  subject
	 *订单总价  price
	 *订单数量(一般固定为1)  quantity
	 *折扣(一般不需要)  discount
	 *支付类型(一般为1)  payment_type
	 */
	
	public void setAlipayOrdersMessage(String  out_trade_no,String show_url ,String body,String subject ,String price )
	{
		
		this.out_trade_no=out_trade_no;
		this.show_url=show_url;
		this.body=body;
		this.subject=subject;
		this.price=price;
		//订单数量规定为1
		this.quantity="1";
		//this.quantity=quantity;
		//折扣0.00
		this.discount="0.00";
//		this.discount=discount;
		//支付类型
		this.payment_type="1";	
//		this.payment_type=payment_type;
		
	}
	
	
	

}
